﻿#define _CRT_SECURE_NO_WARNINGS 

//问题 B: 求方程的根
//#include<stdio.h>
//
//#include <math.h>
//
//void shigen(float a, float b, float q) {
//    float x1, x2;
//    x1 = (-b + sqrt(q)) / (2 * a);
//    x2 = (-b - sqrt(q)) / (2 * a);
//    printf("x1=%.3f x2=%.3f\n", x1, x2);
//}
//
//void denggen(float a, float b) {
//    float x;
//    x = -b / (2 * a);
//    printf("x=%.3f\n", x);
//}
//
//void xugen(float a, float b, float q) {
//    float realPart, imagPart;
//    realPart = -b / ( 2 * a );
//    imagPart = sqrt(-q) / (2 * a);
//    printf("x1=%.3f+%.3fi x2=%.3f-%.3fi\n", realPart, imagPart, realPart, imagPart);
//}
//
//
//
//int main()
//{
//    float a, b, c, q;
//    void shigen(float, float, float);
//    void denggen(float, float);
//    void xugen(float, float, float);
//    scanf("%f%f%f", &a, &b, &c);
//    q = b * b - 4 * a * c;
//    if (q > 0) shigen(a, b, q);
//    else if (q == 0) denggen(a, b);
//    else xugen(a, b, q);
//    return 0;
//}

//C 语言习题 5.17 - 求两数的商      指定小位数的商

//#include <stdio.h>
//
//	void div(int m, int n, int digits) {
//		double result = m / n;           //这并不是求商，这是错误的写法
//
//		printf("%.*lf\n", digits, result);//	用*指定浮点数
//	}
//
//
//#include <stdio.h>

//void div(int m, int n, int digits)
// {
//    int integerPart = m / n; // 整数部分
//    int remainder = m % n; // 余数
//    printf("%d.", integerPart);
//    for (int i = 0; i < digits; i++) 
//    {
//        remainder *= 10;
//        int digit = remainder / n;
//        printf("%d", digit);
//        remainder %= n;
//    }
//    printf("\n");
//}
//
//void div(int m, int n, int digits);   /* 函数声明 */
//int main()
//{
//	int m, n, digits;
//	scanf("%d%d%d", &m, &n, &digits);
//	div(m, n, digits);
//	return 0;
//}


// C 语言习题 5.10 - 区间素数个数
#include <stdio.h>

// 判断是否为素数
//int is_prime(int n) {
//    if (n < 2) {
//        return 0;
//    }
//    for (int i = 2; i * i <= n; i++) {
//        if (n % i == 0) {
//            return 0;
//        }
//    }
//    return 1;
//}
//
//// 求 n, m 之间素数个数
//int primes(int n, int m) {
//    int count = 0;
//    int start = (n < 2) ? 2 : n;
//    int end = m;
//    if (n > m) {
//        start = (m < 2) ? 2 : m;
//        end = n;
//    }
//    for (int i = start; i <= end; i++) {
//        if (is_prime(i)) {
//            count++;
//        }
//    }
//    return count;
//}
//
//
//int primes(int n, int m);    /* 求 n, m 之间素数个数 */
//int is_prime(int n);        /* 判断是否为素数 */
//int main()
//{
//    int number;             /* 素数个数 */
//    int n, m;
//    scanf("%d%d", &n, &m);
//    number = primes(n, m);  /* 调用求素数个数的函数，并将返回值赋值给 number */
//    printf("%d\n", number);
//    return 0;
//}

//C 语言习题 5.14 - 趣味取小数

/*
编写一个函数，取一个小数的第 𝑛 n(− 10 ≤ 𝑛 ≤ 16) (−10≤n≤16) 位：
当 𝑛 > 0 n > 0 时，
从小数点位置开始向右取小数部分第 𝑛 n 位；
当 𝑛 < 0 n < 0 时，
 从小数点位置开始向左取整数部分的第 𝑛 n 位。*/


/*
//#include <stdio.h>
//#include <string.h>
//
//
//
//int get_one_digit(double num, int n)
//{
//    char str[50];
//    sprintf(str, "%.16f", num);
//    int len = strlen(str);
//    int decimal_pos = -1;
//    for (int i = 0; i < len; i++)
//    {
//        if (str[i] == '.') {
//            decimal_pos = i;
//            break;
//        }
//    }
//    if (n > 0) {
//        int index = decimal_pos + n;
//        if (index < len) {
//            return str[index] - '0';
//        }
//        else 
//        {
//            return -1;
//        }
//    }
//    else {
//        int index = decimal_pos + n;
//        if (index >= 0) 
//        {
//            return str[index] - '0';
//        }
//        else 
//        {
//            return -1;
//        }
//    }
//}
//
//
//int get_one_digit(double num, int n);   /* 函数声明 */
//int main()
//{
//    double number;
//    int n;
//    int digit;                         /* 第 n 位数字 */
//    scanf("%lf%d", &number, &n);       /* 输入数据 */
//    digit = get_one_digit(number, n);  /* 调用查找第 n 位数字并将数字返回复制给 digit */
//    printf("%d\n", digit);
//    return 0;
//} 
//
//#include<stdio.h>
//int main()
//{
//	int n = 0;
//	int flag = 1;
//	for (int n = 0; n <= 500; n++)
//	{
//		if (n < 2)
//		{
//			flag = 0;
//		}
//		else
//		{
//			for (int i = 0; i <= n; i++)
//			{
//				if (n % i == 0)
//				{
//					flag = 0;
//					break;
//				}
//				
//			}
//
//		}
//		if (flag)
//		{
//			printf("This is a prime.\n");
//			printf("i\n");
//		}
//		else
//			printf("This is not a prime.");
//	}
//	return 0;
//}

//#include <stdio.h>
//
//int main() 
//{
//    for (int n = 2; n <= 500; n++)
//    {
//        int isPrime = 1;
//        for (int i = 2; i * i <= n; i++) 
//        {
//            if (n % i == 0)
//            {
//                isPrime = 0;
//                break;
//            }
//        }
//        if (isPrime)
//        {
//            printf("%d ", n);
//        }
//    }
//    printf("\n");
//    return 0;
//}

//int solve(int x) //直接使用形参，有新的变量，一定要声明变量
//{
//	//int x, y; //重复使用参数
//	int y;
//
//	if (x < 1)
//	{
//		y = x;
//		return y;
//	}
//	else if (x >= 1 && x <= 10)
//	{
//		y = 2 * x - 1;
//		return y;
//	}
//	   else 
//	{//添加花括号
//		y = 3 * x - 11;
//		return y;
//	}
//}

#include<stdio.h>


double HighScore;       /* 全局变量，最高分 */
double LowScore;        /* 全局变量，最低分 */
double SumScore;        /* 全局变量，总分 */
double AverageScore;    /* 全局变量，平均分 */
void calcscore(int n);  /* 函数声明 */


void calcscore(int n) {
    int score;
    scanf("%d", &score);
    HighScore = score;
    LowScore = score;
    SumScore = score;
    for (int i = 1; i < n; i++) {
        scanf("%d", &score);
        if (score > HighScore) {
            HighScore = score;
        }
        if (score < LowScore) {
            LowScore = score;
        }
        SumScore += score;
    }
    AverageScore = SumScore / n;  
}

int main()
{
    int n;
    scanf("%d", &n);
    calcscore(n);   
    printf("%g%g%g%g\n", HighScore, LowScore, SumScore, AverageScore);
    return 0;
}